package model.dao;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import model.Professor;
import model.Turma;

public class ProfessorDaoImpl implements ProfessorDao {
	List<Professor> listaProf = new ArrayList<Professor>();
	List<Turma> listaTurmas = new ArrayList<Turma>();
	
	
	public void cadastrar(String nome, String cpf, String departamento) {
		Professor professor = new Professor(nome, cpf, departamento);
		listaProf.add(professor);
	}
	
	public boolean carregar(String arquivo) 
			throws FileNotFoundException, IOException {
		
		try {
			String linha;
			String nome = "";
			String cpf = "";
			String departamento = "";
			
			File file = new File(arquivo);
			
			if (!file.exists()){
				return false;
				
			}
			BufferedReader br = new BufferedReader(new FileReader(arquivo));

			while( (linha = br.readLine()) != null ){
				String[] line = linha.split("[;]");
				int i = 0;
				for (String str : line){
					i++;
					switch(i){
						case 1 : nome = str;
							break;
						case 2 : cpf = str;
							break;
						case 3 : departamento = str;
					}
				}
				this.cadastrar (nome,cpf,departamento);
			}
			br.close();
		}catch(NumberFormatException e){
			System.out.println("N�o � poss�vel carregar o arquivo de Professor");
			System.out.println("\n\nPrograma Finalizado!");
			System.exit(1);
		}
		return true;
				
	}


	public void salvar(String arquivo, boolean adicionar)
			throws IOException {
		String nome;
		String cpf;
		String departamento;
		File file = new File(arquivo);
		file.delete();
		FileWriter fw = new FileWriter(arquivo, adicionar);
		for (Professor professor : this.listaProf) {
			nome = professor.getNome();
			cpf = professor.getCpf();
			departamento = professor.getDepartamento();
			fw.write(nome +";" +cpf+";" +departamento+"; \n");
		}
		fw.close();
	}
	
	public int verificarCpf(String cpf) {
		int i = 0;
		for (Professor prof : listaProf){
			String teste = prof.getCpf();
			if (teste.equals(cpf)) {
				return i;
			}
			i++;
		}
		return -1;
	}
	
	public List<Professor> getListaProfessores() {
		return listaProf;
	}
}
